import type { Goods,EvaluateInfo, EvaluateRequestParams, Evaluate, } from "@/types/Goods";
import type { Pagination, XtxResponse } from "@/types/Response";
import XtxRequestManager from "@/utils/XtxRequestManager";

export class GoodsAPI{
    //根据商品 id 获取商品的详细信息
    static getGoodsInfo(id:string){
        return XtxRequestManager.instance.request<XtxResponse<Goods>,{id:string}>({
            url: "/goods",
            params: { id },
        })
    }
    //创建用于获取同类商品和猜你喜欢的API接口函数
    static getRelevantGoods(args?:{id?:string,limit?:number}){
    // 获取同类商品
    // id: 商品id, 传递了商品id表示同类推荐, 没传则表示猜你喜欢
    // limit: 限制请求的商品数量
    //如果传了id但是没有传limit
    if(typeof args !=='undefined' && typeof args.limit === 'undefined'){
       args.limit = 16
    }else{
        // 什么都没传
        args = {limit:16}
    }
    return XtxRequestManager.instance.request<XtxResponse<Goods[]>>({
        url: "/goods/relevant",
        params: args,
    })
    }
      // 获取热榜
    static getHotSaleGoods(id:string,type:number,limit:number){
        return XtxRequestManager.instance.request<XtxResponse<Goods[]>>({
            url: "/goods/hot",
            params: { id, type, limit },
        })
    }
     // 获取商品评价信息
   static getEvaluateInfo(id:string){
    return XtxRequestManager.instance.request<XtxResponse<EvaluateInfo>>({
        url:`https://mock.boxuegu.com/mock/1175/goods/${id}/evaluate`
    })
   }
    // 获取商品评价列表
   static getEvaluateList(id:string,reqParams:EvaluateRequestParams){
    return XtxRequestManager.instance.request<XtxResponse<Pagination<Evaluate>>>({
        url: `https://mock.boxuegu.com/mock/1175/goods/${id}/evaluate/page`,
        data: reqParams,
    })
   }
}